//Bicho verde
package com.me.adventures.characters;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.Animation;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.graphics.g2d.TextureRegion;
import com.badlogic.gdx.math.Vector2;
import com.me.adventures.main.AdventuresOfManuel;
import com.me.adventures.main.Constant;
public class Leeper extends PersonajeDelJuegoEnemigo {
public static final int ABAJO = 0;
public static final int IZQUIERDA = 1;
public static final int DERECHA = 2;
public static final int ARRIBA = 3;
private boolean dormido;
private int tiempoParaDormir;
//Atributos para pintar
private TextureRegion [][] leeperMatrizFrames;
private Animation leeperAnimationAbajoDespierto, leeperAnimationArribaDespierto, leeperAnimationDerechaDespierto, leeperAnimationIzquierdaDespierto;
private Animation leeperAnimationAbajoDormido, leeperAnimationArribaDormido, leeperAnimationDerechaDormido, leeperAnimationIzquierdaDormido;
public Leeper(AdventuresOfManuel adventures, Vector2 posicion, Manuel manuel, int direccion) {
super(adventures, posicion, manuel);
dormido = false;
ataqueActivado = true;
this.direccion = direccion;
Textura = adventures.getManager().get("Enemigos/TablaBichoVerde.png", Texture.class);
leeperMatrizFrames = new TextureRegion[8][2];
leeperMatrizFrames[ABAJO][0] = new TextureRegion(Textura, 0, 0, Constant.ANCHURA_PERSONAJE, Constant.ALTURA_PERSONAJE);
leeperMatrizFrames[ABAJO][1] = new TextureRegion(Textura, 58, 0, Constant.ANCHURA_PERSONAJE, Constant.ALTURA_PERSONAJE);
leeperMatrizFrames[ABAJO+4][0] = new TextureRegion(Textura, 0, 58, Constant.ANCHURA_PERSONAJE, Constant.ALTURA_PERSONAJE);
leeperMatrizFrames[ABAJO+4][1] = new TextureRegion(Textura, 58, 58, Constant.ANCHURA_PERSONAJE, Constant.ALTURA_PERSONAJE);
leeperMatrizFrames[IZQUIERDA][0] = new TextureRegion(Textura, 116, 0, Constant.ANCHURA_PERSONAJE, Constant.ALTURA_PERSONAJE);
leeperMatrizFrames[IZQUIERDA][1] = new TextureRegion(Textura, 174, 0, Constant.ANCHURA_PERSONAJE, Constant.ALTURA_PERSONAJE);
leeperMatrizFrames[IZQUIERDA+4][0] = new TextureRegion(Textura, 116, 58, Constant.ANCHURA_PERSONAJE, Constant.ALTURA_PERSONAJE);
leeperMatrizFrames[IZQUIERDA+4][1] = new TextureRegion(Textura, 174, 58, Constant.ANCHURA_PERSONAJE, Constant.ALTURA_PERSONAJE);
leeperMatrizFrames[DERECHA][0] = new TextureRegion(Textura, 232, 0, Constant.ANCHURA_PERSONAJE, Constant.ALTURA_PERSONAJE);
leeperMatrizFrames[DERECHA][1] = new TextureRegion(Textura, 290, 0, Constant.ANCHURA_PERSONAJE, Constant.ALTURA_PERSONAJE);
leeperMatrizFrames[DERECHA+4][0] = new TextureRegion(Textura, 232, 58, Constant.ANCHURA_PERSONAJE, Constant.ALTURA_PERSONAJE);
leeperMatrizFrames[DERECHA+4][1] = new TextureRegion(Textura, 290, 58, Constant.ANCHURA_PERSONAJE, Constant.ALTURA_PERSONAJE);
leeperMatrizFrames[ARRIBA][0] = new TextureRegion(Textura, 348, 0, Constant.ANCHURA_PERSONAJE, Constant.ALTURA_PERSONAJE);
leeperMatrizFrames[ARRIBA][1] = new TextureRegion(Textura, 406, 0, Constant.ANCHURA_PERSONAJE, Constant.ALTURA_PERSONAJE);
leeperMatrizFrames[ARRIBA+4][0] = new TextureRegion(Textura, 348, 58, Constant.ANCHURA_PERSONAJE, Constant.ALTURA_PERSONAJE);
leeperMatrizFrames[ARRIBA+4][1] = new TextureRegion(Textura, 406, 58, Constant.ANCHURA_PERSONAJE, Constant.ALTURA_PERSONAJE);
leeperAnimationAbajoDespierto = new Animation(0.05f, leeperMatrizFrames[ABAJO]);
leeperAnimationArribaDespierto = new Animation(0.05f, leeperMatrizFrames[ARRIBA]);
leeperAnimationIzquierdaDespierto = new Animation(0.05f, leeperMatrizFrames[IZQUIERDA]);
leeperAnimationDerechaDespierto = new Animation(0.05f, leeperMatrizFrames[DERECHA]);
leeperAnimationAbajoDormido = new Animation(0.05f, leeperMatrizFrames[ABAJO+4]);
leeperAnimationArribaDormido = new Animation(0.05f, leeperMatrizFrames[ARRIBA+4]);
leeperAnimationIzquierdaDormido = new Animation(0.05f, leeperMatrizFrames[IZQUIERDA+4]);
leeperAnimationDerechaDormido = new Animation(0.05f, leeperMatrizFrames[DERECHA+4]);
frameActual = leeperMatrizFrames[direccion][0];
}
public void activarAtaque() {
}
@Override
public void update() {
boolean colisionDerecha = colisiones.colisionDerechaObjeto(this) || colisiones.colisionDerechaEnemigo(this) || colisiones.colisionMovibleDerecha(this);
boolean colisionIzquierda = colisiones.colisionIzquierdaObjeto(this) || colisiones.colisionIzquierdaEnemigo(this) || colisiones.colisionMovibleIzquierda(this);
boolean colisionArriba = colisiones.colisionArribaObjeto(this) || colisiones.colisionArribaEnemigo(this) || colisiones.colisionMovibleArriba(this);
boolean colisionAbajo = colisiones.colisionAbajoObjeto(this) || colisiones.colisionAbajoEnemigo(this) || colisiones.colisionMovibleAbajo(this);
boolean colisionManuel = colisiones.colisionAbajoConManuel(this) || colisiones.colisionArribaConManuel(this) || colisiones.colisionDerechaConManuel(this) || colisiones.colisionIzquierdaConManuel(this);
if(dormido == false && !colisionManuel){
if(direccion == ARRIBA){
if(!colisionArriba) {
if(tiempoParaMovimiento == 0){
posicion.y = (float) (posicion.y + Constant.SPEED);
stateTime = stateTime + Gdx.graphics.getDeltaTime();
frameActual = leeperAnimationArribaDespierto.getKeyFrame(stateTime, true);
tiempoParaMovimiento = Constant.TIEMPO_MOVIMIENTO_LEEPER;
}
}
else{
if(!colisionDerecha)
direccion = DERECHA;
else if(!colisionIzquierda)
direccion = IZQUIERDA;
else
direccion = ABAJO;
}
}
else if(direccion == IZQUIERDA){
if(!colisionIzquierda){
if(tiempoParaMovimiento == 0){
posicion.x = (float) (posicion.x - Constant.SPEED);
stateTime = stateTime + Gdx.graphics.getDeltaTime();
frameActual = leeperAnimationIzquierdaDespierto.getKeyFrame(stateTime, true);
tiempoParaMovimiento = Constant.TIEMPO_MOVIMIENTO_LEEPER;
}
}
else{
if(!colisionAbajo)
direccion = ABAJO;
else if(!colisionArriba)
direccion = ARRIBA;
else
direccion = DERECHA;
}
}
else if(direccion == DERECHA){
if(!colisionDerecha) {
if(tiempoParaMovimiento == 0){
posicion.x = (float) (posicion.x + Constant.SPEED);
stateTime = stateTime + Gdx.graphics.getDeltaTime();
frameActual = leeperAnimationDerechaDespierto.getKeyFrame(stateTime, true);
tiempoParaMovimiento = Constant.TIEMPO_MOVIMIENTO_LEEPER;
}
}
else{
if(!colisionAbajo)
direccion = ABAJO;
else if(!colisionArriba)
direccion = ARRIBA;
else
direccion = IZQUIERDA;
}
}
else {
if(!colisionAbajo) {
if(tiempoParaMovimiento == 0){
posicion.y = (float) (posicion.y - Constant.SPEED);
stateTime = stateTime + Gdx.graphics.getDeltaTime();
frameActual = leeperAnimationAbajoDespierto.getKeyFrame(stateTime, true);
tiempoParaMovimiento = Constant.TIEMPO_MOVIMIENTO_LEEPER;
}
}
else{
if(!colisionDerecha)
direccion = DERECHA;
else if(!colisionIzquierda)
direccion = IZQUIERDA;
else
direccion = ARRIBA;
}
}
}
else { //leeper esta dormido
dormido = true;
if(tiempoParaDormir == 0){
stateTime = stateTime + Gdx.graphics.getDeltaTime();
if(direccion == ARRIBA)
frameActual = leeperAnimationArribaDormido.getKeyFrame(stateTime, true);
else if(direccion == ABAJO)
frameActual = leeperAnimationAbajoDormido.getKeyFrame(stateTime, true);
else if(direccion == IZQUIERDA)
frameActual = leeperAnimationIzquierdaDormido.getKeyFrame(stateTime, true);
else
frameActual = leeperAnimationDerechaDormido.getKeyFrame(stateTime, true);
tiempoParaDormir = Constant.TIEMPO_DORMIDO;
}
if(tiempoParaDormir > 0)
tiempoParaDormir--;
}
if(tiempoParaMovimiento > 0)
tiempoParaMovimiento--;
super.update();
}
@Override
public void draw(SpriteBatch batch) {
super.draw(batch);
}
// Getters and Setters -----------------------------------------------------------------------
}